C.S.M.P. Digest Fri, 05 Feb 93 Volume 2 : Issue 9 Today's Topics: TCL, CPanes of variant shapes? how do you do automated GUI testing? Curves in QuickDraw GX The Comp.Sys.Mac.Programmer Digest is moderated by Michael A. Kelly. The digest is a collection of article threads from the internet newsgroup comp.sys.mac.programmer. It is designed for people who read c.s.m.p. semi- regularly and want an archive of the discussions. If you don't know what a newsgroup is, you probably don't have access to it. Ask your systems administrator(s) for details. If you don't have access to news, there is no way that I know of for you to post articles to the group. Each issue of the digest contains one or more sets of articles (called threads), with each set corresponding to a 'discussion' of a particular subject. The articles are not edited; all articles included in this digest are in their original posted form (as received by our news server at cs.uoregon.edu). Article threads are not added to the digest until the last article added to the thread is at least one month old (this is to ensure that the thread is dead before adding it to the digest). Article threads that consist of only one message are generally not included in the digest. The entire digest is available for anonymous ftp from ftp.cs.uoregon.edu [128.223.8.8] in the directory /pub/mac/csmp-digest. Be sure to read the file /pub/mac/csmp-digest/README before downloading any files. The most recent issues are available from sumex-aim.stanford.edu [36.44.0.6] in the directory /info-mac/digest/csmp. If you don't have ftp capability, the sumex archive has a mail server; send a message with the text '$MACarch help' (no quotes) to LISTSERV@ricevm1.rice.edu for more information. The digest is also available via email. Just send a note saying that you want to be on the digest mailing list to mkelly@cs.uoregon.edu, and you will automatically receive each new issue as it is created. Sorry, back issues are not available through the mailing list. Send administrative mail to mkelly@cs.uoregon.edu. ------------------------------------------------------- From: urban@yoda.fsl.noaa.gov (Art Urban) Subject: TCL, CPanes of variant shapes? Organization: Forecast Systems Lab, NOAA, Boulder CO, USA Date: Sun, 3 Jan 1993 21:37:13 GMT Well, the subject line almost states the question well enough...but, Can I make a CPane subclass which is a *region* and not a rectangle? I would love to have a hex shaped region for trapping GoodClicks and such, without having overlapping panes. I see problems handling overlapping rectangles which contain "drawn" hexes which must abutt each other. - -- Art Urban urban@yoda.fsl.noaa.gov =============================================================================== "Look, he's being attacked by creamy nugget centers." -Joel =============================================================================== +++++++++++++++++++++++++++ From: jimlynch@netcom.com (Jim Lynch) Date: 4 Jan 93 23:01:14 GMT Organization: Netcom Online Communications Services (408-241-9760 login: guest) Yes, you can. Here's mine. Feel free to have it as a toy, but if you distribute it, it must include this message. Don't use it in commercially available software without talking to me well in advance. - --------------- *** file CRegion.c *** ------------------ #include "CRegion.h" void CRegion::IRegion ( CView *anEnclosure, CBureaucrat *aSupervisor, short aWidth, short aHeight, short aHEncl, short aVEncl, SizingOption aHSizing, SizingOption aVSizing ) { inherited::IPane ( anEnclosure, aSupervisor, aWidth, aHeight, aHEncl, aVEncl, aHSizing, aVSizing ) ; itsRegionH = NewRgn() ; } void CRegion::Dispose(void) } return(result) ; } result = PtInRgn(thePoint, itsRegionH) ; thePoint.v = theLPoint.v ; thePoint.h = theLPoint.h ; WindToFrame(thePoint, &theLPoint) ; { aWidth, aHeight, aHEncl, aVEncl, aHSizing, aVSizing ) ; itsRegionH = NewRgn() ; } void CRegion::Dispose(void) { DisposeRgn(itsRegionH) ; inherited::Dispose() ; } Boolean CRegion::Contains(Point thePoint) { LongPt theLPoint ; Boolean result ; result = FALSE ; if(ReallyVisible()) { WindToFrame(thePoint, &theLPoint) ; thePoint.h = theLPoint.h ; thePoint.v = theLPoint.v ; result = PtInRgn(thePoint, itsRegionH) ; } return(result) ; } - -------------- *** end of CRegion.c *** ------------------ Here's the .h file: - --------------- *** CRegion.h *** -------------------- #pragma once #include class CRegion : public CPane { protected: RgnHandle itsRegionH ; public: void IRegion ( CView *anEnclosure, CBureaucrat *aSupervisor, short aWidth, short aHeight, short aHEncl, short aVEncl, SizingOption aHSizing, SizingOption aVSizing ) ; void Dispose(void) ; Boolean Contains(Point thePoint); } ; - ---------------- *** end of CRegion.h *** ------------ Notice I don't do anything to itsRegionH after allocating; that's up to your code. Also note that I override CPane::Contains() so CRegion's version checks to see if the point lies in the region referred to by itsRegionH. I use this as an abstract class. I was doing something with piano keys which are irregular shapes. Made buttons out of them, as I recall... In any case, my CKey::IKey method called its superclass' IRegion method then did something to the region (like make a shape). So you could make a CHex which is a subclass of CRegion and draw a hex polygon in itsRegionH... --------------------------- From: bagwill@swe.ncsl.nist.gov (Bob Bagwill) Subject: how do you do automated GUI testing? Date: 4 Jan 93 15:51:25 GMT How does Apple (if they choose to respond) do automated testing of the GUI aspect of their product? How do "professional" Mac developers do automated testing of their products? I will summarize responses (if any). If anyone is willing to share information with me, but don't want it shared with the net, put "PRIVATE" at the head of your response. Warning: Don't send anything your lawyers don't want you to share. And remember that Internet email is not secure. - -- Bob Bagwill bagwill@swe.ncsl.nist.gov NIST/Computer Systems Lab/Distributed Systems Engineering Group +++++++++++++++++++++++++++ From: d88-jwa@dront.nada.kth.se (Jon Wtte) Date: 4 Jan 93 20:51:27 GMT Organization: Royal Institute of Technology, Stockholm, Sweden In <7750@dove.nist.gov> bagwill@swe.ncsl.nist.gov (Bob Bagwill) writes: >How does Apple (if they choose to respond) do automated testing >of the GUI aspect of their product? >How do "professional" Mac developers do automated testing of >their products? Apple has a very good product called Virtual User that lets you create customized or random sessions and play them back over a network to a lot of macs at the same time. It's good, and I haven't seen anything better on any other platform. I seem to remember the arrangements about it being very inexpensive too. >Warning: Don't send anything your lawyers don't want you to share. And >remember that Internet email is not secure. Huh? Why would anyone NOT remember that? It's a fact of life and has always been. Now, phone lines (cellular phones especially) are not secure EITHER, and that's something people tend to forget. - -- -- Jon W{tte, h+@nada.kth.se, Mac Hacker Deluxe -- Speed is arbitrary. Don't believe me? Try a PowerBook 180 running System 7 against a 486 laptop running Windows 3.1. +++++++++++++++++++++++++++ From: howard@netcom.com (Howard Berkey) Date: 4 Jan 93 22:29:55 GMT Organization: Netcom Online Communications Services (408-241-9760 login: guest) In article <1993Jan4.205127.25229@kth.se> d88-jwa@dront.nada.kth.se (Jon Wtte) writes: >In <7750@dove.nist.gov> bagwill@swe.ncsl.nist.gov (Bob Bagwill) writes: > >>How does Apple (if they choose to respond) do automated testing >>of the GUI aspect of their product? > >>How do "professional" Mac developers do automated testing of >>their products? > >Apple has a very good product called Virtual User that lets >you create customized or random sessions and play them back >over a network to a lot of macs at the same time. > >It's good, and I haven't seen anything better on any other >platform. I seem to remember the arrangements about it being >very inexpensive too. > You can say that again. Similar tools for the PC are ~3-500 dollars, and x-based tools start around $3-15,000. (They do more though. Not an order of magnitude more, however.) VU is supposedly a good package. - -Howard - -- :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: Howard "Pasty-faced" Berkey howard@netcom.com I just don't want to know, anymore. ... .. ... ... .. ... ... .. ... ... .. ... ... .. ... ... .. ... --------------------------- From: lari@strauss.cs.unc.edu (Humayun Lari) Subject: Curves in QuickDraw GX Date: 14 Dec 92 02:45:27 GMT Hi, all. Yes, I have finals starting tomorrow, but there's one little question I just *have* to ask... :-) Fact: QuickDraw GX is going to use quadratic bezier curves a la TrueType. However: editing quadratic curves is somewhat painful compared to editing PostScript cubic curves, because of the number of extra points required to describe similar contours. So: are we going to see lots of GX programs that make us use quadratic curves to describe shapes? Or is there some magic way to display cubic curves using quadratics? As far as I know, there's no simple way of doing so. Does GX provide some way of performing this magic? If not <"display ignorance" mode on>, shouldn't it? I guess what I'm worried about is programs showing up that make editing curves harder than it needs to be -- much like the spline curves in MacDraw... Stressfully yours, Humayun Lari (lari@cs.unc.edu) P.S. Personally, I *still* think NuGraph sounds a little cooler than "QuickDraw GX"... of course, average users might think it was a charting package... +++++++++++++++++++++++++++ From: bayes@hplvec.LVLD.HP.COM (Scott Bayes) Date: Thu, 17 Dec 1992 00:00:08 GMT Organization: Hewlett-Packard Co., Loveland, CO > So: are we going to see lots of GX programs that make us use quadratic > curves to describe shapes? Or is there some magic way to display cubic > curves using quadratics? As far as I know, there's no simple way of doing so. > Does GX provide some way of performing this magic? If not <"display > ignorance" mode on>, shouldn't it? Quadratics and (non-degenerate) cubics can't even describe the same curves. It's hard to see how to do the "magic" without approximations and lotsa MIPS, as you say. ScottB +++++++++++++++++++++++++++ From: perm@csd.uu.se (Per Mildner) Date: 18 Dec 92 14:28:18 Organization: Computing Science Dept.,Uppsala University, Sweden I seem to remember a question about this at the last WWDC. I think the specific question was about outlining cubic curves requiring quadratic curves, this was from someone who had implemented similar functionality in a product. The answer was something like: "Yes, normally, but we have some very bright math people", ie, they use some sort of approximation magic. - -- Per Mildner perm@CSD.UU.SE Computing Science Dept. tel: +46 18181049 Uppsala University, Sweden fax: +46 18521270 +++++++++++++++++++++++++++ From: bwilliam@iat.holonet.net (Bill Williams) Organization: HoloNet National Internet Access BBS: 510-704-1058/modem Date: Wed, 23 Dec 1992 06:12:38 GMT >From the center of my handwritten notes regarding Quickdraw GX as presented at Apples May 92 WWDC.... "The spline routines are used with inset and an outset values to create "fat" splines, the two outer edges are different splines (derivitive curves) that approach cubic order complexity, but are not, and can be converted back to the original very quickly (Rob Johnson, a math prof from UCLA invented fast transformation algorithms for all QD GX spline calculations, and is now an apple QD GX contributor)" For those interested heres a bunch of my other observations as recorded that week intact and without changes...... Beyond QuickDraw : the next generation in imaging Given by Cary Clark - graphics team leader and author of color fonts, and old 3D quickdraw. The introduction of several discussions of Apples COMPLETE REPLACEMENT of QuickDraw with a near clone of Adobe DisplayPostscript called QuickDraw GX. Its code name was Skia ("Skee-ah"). It is a geometry (object) based graphics model. It is nearly finished and will be available three different ways (end user $$, distributable license, and eventually free inclusion in a future system release). Wow, wow, wow. It is definitely NOT as fast as display postscript, but in many ways it seemed faster. Work started in 1988 before DisplayPostscript was shown publicly. It is of course completely device independent, and its output files when printing, even after customization for a specific device at spool initiation ARE DEVICE INDEPENDENT AT ALL TIMES. Final printed output devices may be raster devices, vector devices (plotter) or Postscript devices. No words or tokens are used in the imaging model, there is no server level, instead it appears as good-old-fashioned quickdraw to a normal programmer except that all geometries are based on 32 bit values and sometimes 64 bit values. (A fixed point is assumed when some values are used) Unlike DisplayPostscript floating point values and computations are NOT used. This is a negative trait. Also unlike postscript, YOU MAY NOT SEND CODE OF ANYKIND TO THE OUTPUT SPOOLED IMAGE. Thus the author of "Jag" was told that his anti-aliasing product has no value because the effects of his product EXCEPT AS DEVICE DEPENDENT BITMAPS cannot be sent through the spooler and therefore should not be integrated into QD GX. The reason: THE GOAL OF QD GX IS TO MATCH THE SCREEN TO THE PRINTED OUTPUT. No code encapsulation is permitted. This is a good intention, but not providing spoolable code (as with PostScript) is a negative trait. Like DisplayPostscript, QD GX is a single pixel color model, and anti-aliasing and ramping is not supported. This is not to be confused with the pleasing types of blending fills that it does support. You may mix Quickdraw commands interspersed with QuickDraw GX without too much effort. Unfortunately, if you do, you must be careful to use a CASE SENSITIVE LANGUAGE such as Modula-2, C, C++ because there is a RPointS and a RpointS as well as QuickDraws RRectS and the new QuickDraw GXUs RrectS. Though on one slide I saw the word RrectangleS instead of rect, so I assume in Pascal they have a RgxPointS and a RrectangleS redefinition. It does everything that display postscript does and a few extra things (such as placing pictures at joins of two lines). It has the AMAZING benefit of using the highly optimizable quadratic spline for all curve and path operations. Though it cannot draw a circle. (I am not joking, strictly speaking, MANY of QuickDraw GX primitives are actually "libraries" outside of the lower lever QuickDraw GX.) I think drawcircle is a library routine. The spline routines are used with inset and an outset values to create "fat" splines, the two outer edges are different splines (derivitive curves) that approach cubic order complexity, but are not, and can be converted back to the original very quickly (Rob Johnson, a math prof from UCLA invented fast transformation algorithms for all QD GX spline calculations, and is now an apple QD GX contributor) I got the feeling that "shapes", not paths or spline derived curves, were used for all of the very fast animated demos presented (50 demos). I believe that "shapes" do NOT possess splines but rather are decomposed curves defined solely of small straight line segments. This is for speed speed speed. The programmer gets to define the segmentation parameters used. Shapes are defined by fixed point, to prevent degradation after any series of permanent transformations. The system supports a three-D transformation matrix with many library routines to help set the matrix parameters. Two values in the Matrix are unconventionally used for storage of variables meant for perspective distortion. (QD GX has no three dimensional routines, and the unconventional usage does not affect the non-existent "z" data) It has tons of layered transformation matrices at many layers before the final image is drawn and seems at most times to be a full blown 3D imaging model... but it isn't. The matrix routines support fast skew, distort, and rotation (including bitmaps) Patterns are now two parts, pattern data and "color shade" are separate identities. There are still no pixel locations in QuickDraw, points have always been an abstraction and still are.... but programmers must be cautious to shift all position info to convert all points into fixed point math to avoid unwanted locations. The new more accurate pixel locations allow much more exact vector line rotation even on 72 point monitors. The effect needs to be dynamic to discern the enhancement though. It supports compressed "infinite-precision" BitMap regions, very nice results were obtained in the demos. TrueType and Adobe type 1 fonts (under ATM) are EXACTLY EQUAL in usage in QD GX, neither has any preferential treatment in ANY WAY. Font families have meaning now in the menu interface (like Adobe's Type Reunion already does) The new font support is almost as complete as postscripts with some amazing differences. Primarily the ability to use different fancy fonts based on the characters adjacent to the font. Some astoundingly beautiful effects were shown with a slightly altered Zapf Chancery. Letters on the ends of words had bold sweeping flourishes, and capital letters at the beginning of words had long sweeping tails under the adjacent characters. WOW. Apple said they are commissioning a company to create a special "Old English" font for them. A new Adobe Illustrator (version NIA 3.2) was shown that swapped back and forth between QD and QD GX. It had a GODDAMN STUPID PREVIEW MODE as it always has on systems that do not have built in display postscript, because of the nature of the program. The absolute horrifying restriction was only observed by me and other people that may have seen the "No-preview-mode-crap" NeXT version of Adobe Illustrator. Man, what an application not to show as a demo! QD GX is a large set of different new technologies, especially for printing. A kinder gentler series of major changes in printer interfaces would make most people very happy. It is MUCH less cluttered, and far more restricted without probing. A control panel much like system 6's "general" is used to access third party extensions. In fact it is so simple a new menu item is defined by apple called "Print One Copy". Note the lack of "ellipses" (...). That's right it does what it says no questions asked. The audience clapped. A printer "Finder" was created to manage spooling. It has as many features as the real finder in several ways. Plus it appears to be part of the Finder. WOW. Plotters are supported. Hit detection for mouse clicks as well as animated object collision is a major part of QD GX. Including accurate hit detection after all those layers of skewing, distorting, rotating, etcetera.... WOW. This is even better than the NeXT (one of the NeXT's few limitations from what I recall is a "lighter" hit detection system. Multiple color spaces are supported (even within one image!!!!!!!!!) It supports all the cool stuff color Postscript (2) does for dithering, screen rotation (arbitrary angles), etc. It supports viewports in a VERY ABSTRACT MANNER. a port can be a three-d is view any where in a space and can be displayed in a arbitrary shaped region anywhere on a device including MULTIPLE VIEWS OR THE SAME SCENE AT THE SAME TIME. The multiple views can all have different color depths and pixel resolutions, and dithering, and screening, and be somewhere on the same device! Unlike postscript it supports RTL LTR and vertical languages, unlike Postscript it can be used to support indic and arabic languages where the characters change dramatically based on there position and neighboring glyphs. Arabic, Chinese and others where shown. Like Postscript, the fonts can be filled, set on paths, stretched, etc. etc. etc. Including bizarre text effects as seen with many Postscript programs. Users can specify weights directly in their applications (make it 10% bolder, etc.)! Oliver Steele wrote some AMAZING high speed graphics demos that showcased QD GX and two of them, "deflection angle" and "velocity lines" are definite collector items. Like postscript, a path drawing a line cannot be truly "dashed". Like postscript the beginning and the ending of a path can have special endcaps. Endcaps are allowed to be "negative" (erasing) QD GX supports multiple monitors. Apple acknowledged that Radius invented multiple monitor drawing first, not them or anyone else in the industry. You cannot crash QDGX when its many many debugging options are enabled. QD GX uses ZERO BYTES OF APPLICATION HEAP and stores all its structures in its own very special heap structures. It uses almost no Macintosh routines. It does not ever use the memory manager. It cannot run out of memory if disk space is available. Disk is used as memory FOR ANY AND ALL OPERATIONS! QDGX can work on immense bitmaps, far larger than supportable in RAM. Sadly, Cary Clark calls this "backing store" instead of "virtual memory" because he likes anal retentive 1967 IBM mainframe buzzwords. QD GX has a special debugger, BUT THEY WERE NOT ALLOWED TO SHOW IT. Odd. very odd. No recalculations are made in QD GX, it has lots of optimization strategies of all kinds (as does display postscript) but unlike its competitor, it can warn the user if wasteful code is being generated. Plus it never calculates any intermediate variable that is not eventually actually needed! If true I am impressed! It would be almost psychic-ware. It runs (theoretically) in system 6, but needs 7.0 for printing of any kind. The famous QD pattern scrolling bug (user preference?) is now selectable by programmer, patterns can be fixed or positional. No assembly (very little) is used. Because they are greedy opportunistic pigs that are thinking of saving time porting it again and again naturally, but I feel that when 250,000 Motorola boxes from Apple ship per month they can afford to hire a few real programmers. GEEZ! Never in my life have I heard someone brag that almost none of their GRAPHICS ROUTINES are written in assembly. MAJOR LIMITATION: all views and bitmaps based on pixels can have more than 32K pixels per square side. EVER. But amazingly, QD GX will "butt-end" giant bitmaps through the system and accurately align and join them (even through translation, and distortion) so that you can extract and manipulate portions of them. In effect an INFINITE SIZED bitmap can be processed. (A satellite imaging company in the audience asked the question because all their photos have more than 32,000 pixels per side!) Source code was handed out. An unprecedented amount of libraries and source code will be available before and after QD GX's debut. ============================================================ Whew! I have countless other pages of opinions and rambling drivel covering many other sessions at the WWDC written in the same manner if anyone is interested in my remarks on other Apple technologies. Bill Williams (NOT familiar with QuickDraw GX yet) +++++++++++++++++++++++++++ From: ldo@waikato.ac.nz (Lawrence D'Oliveiro, Waikato University) Date: 24 Dec 92 13:13:41 +1300 Organization: University of Waikato, Hamilton, New Zealand In article , bwilliam@iat.holonet.net (Bill Williams) posts his thoroughly fascinating notes on QuickDraw GX. Thanks Bill! There's a place for your posting in my archive of USENET snippets. > Wow, wow, wow. It is definitely NOT as fast as display postscript, but in > many ways it seemed faster. That's a little worrying, considering the sort of hardware it seems to take to run Display PostScript (eg 68040-based NeXTs). Will QuickDraw GX not run on 68000 CPUs? > No words or tokens are used in the imaging model, Well, there'll be another lot of extensions to the QuickDraw picture format, won't there? > there is no server level No big loss. Having one X Window System is bad enough. :-) > Like DisplayPostscript, QD GX is a single pixel color model, and > anti-aliasing and ramping is not supported. You can use the existing anti-aliasing capabilities of Color QuickDraw, can't you? > You may mix Quickdraw commands interspersed with QuickDraw GX without too > much effort. Unfortunately, if you do, you must be careful to use a CASE > SENSITIVE LANGUAGE such as Modula-2, C, C++ because there is a RPointS and > a RpointS as well as QuickDraws RRectS and the new QuickDraw GXUs RrectS. > Though on one slide I saw the word RrectangleS instead of rect, so I > assume in Pascal they have a RgxPointS and a RrectangleS redefinition. Another option is to use a language with scope control, eg "OldQuickDraw.Point" versus "QuickDrawGX.Point". Modula-2 allows you to do this. But of course, language vendors will hack the interfaces to suit themselves. :-) > Shapes are defined by fixed point, to prevent degradation after any series > of permanent transformations. You'll get rounding errors, though. Does QuickDraw GX support "CORDIC" transformations? I think these are a representation of trig functions that allow you to do endlessly-repeated rotational transformations with zero rounding error. > The new font support is almost as complete as postscripts with some > amazing differences. Primarily the ability to use different fancy fonts > based on the characters adjacent to the font. Some astoundingly beautiful > effects were shown with a slightly altered Zapf Chancery. Letters on the > ends of words had bold sweeping flourishes, and capital letters at the > beginning of words had long sweeping tails under the adjacent characters. > WOW. Apple said they are commissioning a company to create a special "Old > English" font for them. Ah, the legendary "Line Layout Manager"! I saw a demo of this way back in 1988 (?), back when it was part of the promised feature set for System 7. The ligatures would appear and disappear as you were typing and deleting characters. I'm drooling just thinking about it... > The famous QD pattern scrolling bug (user preference?) is now selectable > by programmer, patterns can be fixed or positional. Is this the one where patterns are normally aligned to (0,0) in the coordinate space? You could always change that, it just wasn't very well explained how to do it. :-) Lawrence D'Oliveiro fone: +64-7-856-2889 Computer Services Dept fax: +64-7-838-4066 University of Waikato electric mail: ldo@waikato.ac.nz Hamilton, New Zealand 37^ 47' 26" S, 175^ 19' 7" E, GMT+13:00 At first all I could do, in fact, was what I've been doing since the age of seven when any disaster has struck: ask myself how Batman would have acted in similar circumstances. -- PCW Oct '92 +++++++++++++++++++++++++++ From: d88-jwa@dront.nada.kth.se (Jon Wtte) Date: 24 Dec 92 23:47:52 GMT Organization: Royal Institute of Technology, Stockholm, Sweden In <1992Dec24.131341.12976@waikato.ac.nz> ldo@waikato.ac.nz (Lawrence D'Oliveiro, Waikato University) writes: >That's a little worrying, considering the sort of hardware it seems to take >to run Display PostScript (eg 68040-based NeXTs). Will QuickDraw GX not >run on 68000 CPUs? The 68000 is dead, buried and forgotten. Except the PB100 is still the lightest PowerBook around. The screen on the Duos sucks whole mountains. >> No words or tokens are used in the imaging model, >Well, there'll be another lot of extensions to the QuickDraw picture format, >won't there? QuickDraw GX is orthogonal from QuickDraw. It will co-exist, but QuickDraw will not be extended to know anything about GX. At least that's my impressino. - -- -- Jon W{tte, h+@nada.kth.se, Mac Hacker Deluxe -- There's no problem that can't be solved using brute-force algorithms and a sufficiently fast computer. Ergo, buy more hardware. +++++++++++++++++++++++++++ From: ksand@apple.com (Kent Sandvik ) Date: 30 Dec 92 22:13:09 GMT Organization: (Evil Eye Creature from Mars, Inc.) In article , bwilliam@iat.holonet.net (Bill Williams) wrote: > No assembly (very little) is used. Because they are greedy opportunistic > pigs that are thinking of saving time porting it again and again > naturally, but I feel that when 250,000 Motorola boxes from Apple ship per > month they can afford to hire a few real programmers. GEEZ! Never in my > life have I heard someone brag that almost none of their GRAPHICS ROUTINES > are written in assembly. Well, concerning a PowerPC port it makes sense, because asm is no-no or 'if-you-really-need-it' option on this platform. Kent - ------------------- Kent Sandvik (UUCP: ....!apple!ksand; INTERNET: ksand@apple.com) DISCLAIMER: Private activities on the Net. "Don't just do something! Stand there!" -- Mystery Science Theater 3000 +++++++++++++++++++++++++++ From: russotto@eng.umd.edu (Matthew T. Russotto) Date: 31 Dec 92 22:49:23 GMT Organization: Project GLUE, University of Maryland, College Park In article ksand@apple.com (Kent Sandvik ) writes: > >Well, concerning a PowerPC port it makes sense, because asm is no-no >or 'if-you-really-need-it' option on this platform. Uhhh.... why? - -- Matthew T. Russotto russotto@eng.umd.edu russotto@wam.umd.edu Some news readers expect "Disclaimer:" here. Just say NO to police searches and seizures. Make them use force. (not responsible for bodily harm resulting from following above advice) +++++++++++++++++++++++++++ From: k044477@hobbes.kzoo.edu (Jamie R. McCarthy) Date: 1 Jan 93 01:26:08 GMT Organization: Kalamazoo College russotto@eng.umd.edu (Matthew T. Russotto) writes: >ksand@apple.com (Kent Sandvik ) writes: >> >>[Why is QuickDraw GX written entirely in C?] >>Well, concerning a PowerPC port it makes sense, because asm is no-no >>or 'if-you-really-need-it' option on this platform. > >Uhhh.... why? Because the PowerPC will run on a different processor, and the Toolbox will be written in the native code for that processor. If Apple writes it in assembly, they have to write it (and debug it) twice. - -- Jamie McCarthy Internet: k044477@kzoo.edu AppleLink: j.mccarthy "A degree in Computer Science from Berkeley didn't much qualify me to uphold the banner of Chaos against the forces of Order." - R. Zelazny +++++++++++++++++++++++++++ From: werner@dewey.soe.berkeley.edu (John Werner) Date: 1 Jan 93 01:55:32 GMT Organization: School of Education, U.C. Berkeley In article <1993Jan1.012608.5403@hobbes.kzoo.edu> k044477@hobbes.kzoo.edu (Jamie R. McCarthy) writes: >Because the PowerPC will run on a different processor, and the Toolbox >will be written in the native code for that processor. If Apple writes >it in assembly, they have to write it (and debug it) twice. Also, hand-coding something in assembler for a RISC chip is MUCH harder than on a traditional processor. There's a smaller instruction set, more registers, and you have to worry about pipelining. A good optimizing compiler can usually do a better job than most humans can do (at least in a reasonable amount of time). - -- John Werner werner@soe.berkeley.edu UC Berkeley School of Education +++++++++++++++++++++++++++ From: sunilg@access.digex.com (Sunil Gupta) Date: 1 Jan 93 17:26:14 GMT Organization: Express Access Online Communications, Greenbelt, MD USA werner@dewey.soe.berkeley.edu (John Werner) writes: : : Also, hand-coding something in assembler for a RISC chip is MUCH : harder than on a traditional processor. There's a smaller instruction : set, more registers, and you have to worry about pipelining. A good : optimizing compiler can usually do a better job than most humans can : do (at least in a reasonable amount of time). Your comment is true for RISC processors, but the complaint was being made about the CISC implementation. My small (4 person) programming shop maintains our code for a number of platforms. For CISC implementations we usually tune critical sections in assembly and usually let the compiler worry about that for RISC implementations. If we can do that, I'm sure that a megabucks company can spare a few programmers for a project that would greatly enhance their products. Sunil Gupta Monsoon Software, Inc. sg@monsoon.com +++++++++++++++++++++++++++ From: jmunkki@vipunen.hut.fi (Juri Munkki) Date: 1 Jan 93 18:34:51 GMT Organization: Helsinki University of Technology In article <1i1urmINNt8g@mirror.digex.com> sunilg@access.digex.com (Sunil Gupta) writes: >werner@dewey.soe.berkeley.edu (John Werner) writes: >: Also, hand-coding something in assembler for a RISC chip is MUCH >: harder than on a traditional processor. There's a smaller instruction >: set, more registers, and you have to worry about pipelining. A good >: optimizing compiler can usually do a better job than most humans can >: do (at least in a reasonable amount of time). > >Your comment is true for RISC processors, but the complaint was being >made about the CISC implementation. My small (4 person) programming shop >maintains our code for a number of platforms. For CISC implementations >we usually tune critical sections in assembly and usually let the >compiler worry about that for RISC implementations. If we can do that, >I'm sure that a megabucks company can spare a few programmers for a >project that would greatly enhance their products. I agree totally. In addition for QD GX, they used fixed point math. No current languages have built-in support for fixed point math, so a high level implementation will not benefit fully from the integer speed of fixed point. Floating point is more suitable for high level languages and is probably just as fast as fixed point on the PowerPC architecture. Then again, floating point would have been a very bad idea on the 68K machines. It seems to me that the best solution would have been to write two versions: first a floating point/high level language implementation to debug the algorithms and then a fixed point/assembly language implementation to make it run ok on the current Macs. - -- Juri Munkki Windsurf: fast sailing jmunkki@hut.fi Macintosh: fast software +++++++++++++++++++++++++++ From: d88-jwa@dront.nada.kth.se (Jon Wtte) Date: 4 Jan 93 11:26:10 GMT Organization: Royal Institute of Technology, Stockholm, Sweden In <1992Dec31.224923.15838@eng.umd.edu> russotto@eng.umd.edu (Matthew T. Russotto) writes: >>Well, concerning a PowerPC port it makes sense, because asm is no-no >>or 'if-you-really-need-it' option on this platform. >Uhhh.... why? Because you don't know how the compiler will schedule instructions and use condition code sets. Note the s. Computers today are not what they used to be; what we see now is a more and more complex interaction between compiler, libraries and hardware; you really need machines to keep track of getting it all right! If you would want to write a context-free assembly portion, you would have to surround it by several (5 on each side?) NOP instructions; and then would degrade the performance of that asm{} by quite a bit... Cheers, / h+ - -- -- Jon W{tte, h+@nada.kth.se, Mac Hacker Deluxe -- -- I don't fear death, it's dying that scares me. +++++++++++++++++++++++++++ From: bhanafee@picasso.ads.com (Brian Hanafee) Date: 4 Jan 93 22:44:31 GMT Organization: Advanced Decision Systems, Mountain View, CA 94043, +1 (415) In article <1993Jan1.183451.22522@nntp.hut.fi> jmunkki@vipunen.hut.fi (Juri Munkki) writes: >I agree totally. In addition for QD GX, they used fixed point math. No >current languages have built-in support for fixed point math, so a high ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ *Almost* no current languages. Ada does (see section 3.5.9 of the Ada LRM). Though I still wouldn't recommend using Ada to write QD GX, it's a feature that of Ada that I'd really like to see in some other languages. Note that this is in addition to, not in place of, integer and floating types. When fixed point types are the right thing, it's much easier than using integers and trying to keep track of the binary point yourself. Let the compiler do all the work! >level implementation will not benefit fully from the integer speed of >fixed point. - -- Brian Hanafee Advanced Decision Systems bhanafee@ads.com 1500 Plymouth Street (415) 960-7300 Mountain View, CA 94043-1230 --------------------------- End of C.S.M.P. Digest **********************